package com.sy.No6_3;
/*
JFame这个类的主要功能是使用该类可以快速的开发出Java界面应用程序（c/s架构），
属于java.swing知识体系；它是屏幕上window的对象，能够最大化、最小化、关闭。
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyFirstActionListener extends JFrame {

    final static long serivalVersionUID/*版本号*/ = 1L;
    Container container = getContentPane();
    JButton button = new JButton("点击我");

    /*我们可以在 JFrame 对象中添加 AWT 或者 Swing 组件。但是，虽然它有 add 方法，
    却不能直接用于添加组件，否则会抛出异常。造成这个现象的原因只有一个解释：JFrame 不是一个容器，它只是一个框架。那么，应该怎么添加组件呢？

　　JFrame 有一个 Content Pane，窗口能显示的所有组件都是添加在这个 Content Pane 中。
   JFrame 提供了两个方法：getContentPane 和 setContentPane 就是用于获取和设置其 Content Pane 的。

　　对JFrame添加组件有两种方式：
　　1)用getContentPane()方法获得JFrame的内容面板，再对其加入组件：frame.getContentPane().add(childComponent)

　　2)建立一个Jpanel或JDesktopPane之类的中间容器，把组件添加到容器中，用setContentPane()方法把该容器置为JFrame的内容面板：


　　　　JPanel  contentPane=new  JPanel();
　　　　//把其它组件添加到Jpanel中;
　　　　frame.setContentPane(contentPane);
　　　　//把contentPane对象设置成为frame的内容面板
     */
    class ButtonListener implements ActionListener {
        int x = 0;

        public void actionPerformed(ActionEvent arg0) {
            MyFirstActionListener.this.button.setText("我被点击了" + (++x) + "次");
        }
    }

    public MyFirstActionListener() {
        super("JFrame窗体");
        /*
        然后可以通过setBounds（）；
        对组件进行自定义大小和位置设置。
        setBounds()有四个参数：
        第一个参数改组件在JFrame中的x坐边
        第二个参数改组件在JFrame中的y坐标
        第三个参数改组件在JFrame中的组件宽度
        第四个参数改组件在JFrame中的组件高度
         */
        this.setBounds(200, 100, 200, 200);
        //x,y表示在屏幕上的坐标
        button.addActionListener(new ButtonListener());
        container.add(button);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new MyFirstActionListener();
    }
}
